package com.egao.common.module.company.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.egao.common.core.web.PageParam;
import com.egao.common.module.company.entity.Recruit;
import com.egao.common.module.company.entity.vo.RecruitFormVO;
import com.egao.common.module.company.entity.vo.RecruitListVO;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Map;


/**
 * 招聘信息接口mapper
 * @author dl
 */
@Repository
public interface RecruitMapper extends BaseMapper<Recruit> {
    /**
     * 查询招聘信息
     * @author
     * @param page 单位分页
     * @return 招聘信息列表
     */
    List<RecruitListVO> listPage(@Param("page") PageParam<RecruitListVO> page);
    /**
     * 导出招聘信息
     * @author
     * @param page 单位分页
     * @return 招聘信息列表
     */
    List<RecruitFormVO> listExcel(@Param("page") PageParam<RecruitFormVO> page);

    /**
     * 查询未过期招聘信息数量
     * @author
     * @param page 单位分页
     * @return 招聘信息列表
     */
    Integer getRecruitByCompanyId(@Param("page") PageParam<RecruitListVO> page);

    /**
     * 查询需要索引数据
     * @param start page
     * @param end limit
     * @return 招聘信息列表
     */
    List<Recruit> initIndex(@Param("start") Integer start, @Param("end") Integer end);
    /**
     * 招聘信息总数
     * @param page 分页
     * @return 总数
     */
    Integer countTotal(@Param("page") PageParam<RecruitListVO> page);
    /**
     * 统计省份
     * @author
     * @param page 分页
     * @return
     */
    List<Map<String, Object>> countProvince(@Param("page") PageParam<RecruitListVO> page);
    /**
     * 统计单位性质
     * @author
     * @param page 分页
     * @return
     */
    List<Map<String, Object>> countNature(@Param("page") PageParam<RecruitListVO> page);
    /**
     * 统计单位行业
     * @author
     * @param page 分页
     * @return
     */
    List<Map<String, Object>> countIndustry(@Param("page") PageParam<RecruitListVO> page);
    /**
     * 统计单位规模
     * @author
     * @param page 分页
     * @return
     */
    List<Map<String, Object>> countScale(@Param("page") PageParam<RecruitListVO> page);
    /**
     * 统计发布类型
     * @author
     * @param page 分页
     * @return
     */
    List<Map<String, Object>> countAddType(@Param("page") PageParam<RecruitListVO> page);
    /**
     * 统计岗位类型
     * @author
     * @param page 分页
     * @return
     */
    List<Map<String, Object>> countJobCategory(@Param("page") PageParam<RecruitListVO> page);
    /**
     * 统计学历类型
     * @author
     * @param page 分页
     * @return
     */
    List<Map<String, Object>> countEducation(@Param("page") PageParam<RecruitListVO> page);
    /**
     * 根据编号集合查询未过期的信息
     * @author
     * @param map 编号集合
     * @return
     */
    List<Recruit> getRecruitByIds(@Param("map") Map<String, Object> map);
}
